<template>
  <el-select filterable :size="size" v-bind="$attrs" v-on="$listeners" clearable>
    <el-option v-for="item in optionsData" :value="item.value" :key="item.value" :label="item.label"></el-option>
  </el-select>
</template>

<script>
  export default {
    name: "my-select",
    props: {
      /** 如果使用字典查询,传入字典名 **/
      dict: {
        type: String
      },
      /** 如果使用url查询，传入url **/
      url: {
        type: String
      },
      /** 如果不使用字典查询,可以在此参数直接传入option数组 **/
      options: {
        type: Array,
        default: ()=>{
          return []
        }
      },
      /** 默认大小mini **/
      size:{
        type: String,
        default: 'mini'
      },
    },
    data(){
      return{
        optionsData: [],    // el-option数据源
      }
    },
    created() {
      /*
      * 判断字典名称 或者 url是否为空  为空使用options作为数据源， 不为空按字典名称或者url查询数据作为数据源
      * **/
      if(this.dict != null){
        this.$ajax.getDict(this.dict).then(res=>{
          this.optionsData = res;
        });
      }else if(this.url != null){
        this.$ajax.requestCommonGet(this.url).then(res=>{
          this.optionsData = res;
        });
      }else{
        this.optionsData = this.options;
      }
    }
  }
</script>

<style scoped>

</style>
